<template>
	<view v-if="isRecording" class="zzc_mol" />
</template>

<script>
export default {
  name: 'ScreenRecording',
  data() {
    return { isRecording: false }
  },
  created() {
    this.screenInit()
  },
  onUnload() {
    this.AllowScreenshots()
		
    tt.offUserScreenRecord(function() {
		  console.log('用户主动截屏事件。取消事件监听。')
    })
  },
  methods: {
    screenInit() {
      const _this = this
      uni.getSystemInfo({
        success: function(e) {
          // #ifdef MP-WEIXIN
          _this.wxEnvInit(e)
          // #endif
          // #ifdef MP-TOUTIAO
          _this.dyEnvInit(e)
          // #endif
        }
      })
    },
    dyEnvInit(e) {
      const _this = this
      
      if(e.platform == 'android') {
        // 禁止截屏，录屏黑屏。tt.disableUserScreenRecord()仅限安卓端生效
        tt.disableUserScreenRecord()
      } else {
        // IOS防截屏无法实现
        // 监听用户主动录屏事件，现在黑色背景
        tt.onUserScreenRecord(function(res) {
          const { state } = res
          if (state == 'start') _this.isRecording = true
          else _this.isRecording = false
        })
      }
    },
    wxEnvInit(e) {
      const _this = this
      if (e.platform == 'android') {
			  // 微信小程序在安卓手机上 禁止截屏/录屏(注意：禁止后录屏动作还是会进行，但录屏后的视频是黑屏的)
			  wx.setVisualEffectOnCapture({
			    visualEffect: 'hidden', // 传入 hidden 则表示在截屏/录屏时隐藏屏幕
			    success: res => {
			      // uni.showModal({
			      // 	content: "该页面不允许录屏",
			      // 	showCancel: false,
			      // 	confirmText: "确定"
			      // })
			      console.log(res)
			    },
			    fail: err => {
			      console.log(err)
			    },
			    complete: res => {
			      console.log(res)
			    }
			  })
      } else {
			  // 微信小程序在IOS手机上，注意：目前微信小程序在ios上也只能通过监听录屏状态，然后通过添加view层来进行阻止，截屏暂时无法实现
			  // 监听用户录屏事件
			  wx.onScreenRecordingStateChanged(function(res) {
			    if (res.state == 'start') {
			      // uni.showModal({
			      // 	content: "该页面不允许录屏",
			      // 	showCancel: false,
			      // 	confirmText: "确定"
			      // })
			      _this.isRecording = true
			    } else {
			      _this.isRecording = false
			    }
			  })
			  // 查询用户是否在录屏
			  wx.getScreenRecordingState({
			    success: res => {
			      if (res.state == 'on') {
			        _this.isRecording = true
			        // uni.showModal({
			        // 	content: "该页面不允许录屏",
			        // 	showCancel: false,
			        // 	confirmText: "确定"
			        // })
			      } else if (res.state == 'off') {
			        _this.isRecording = false
			      }
			    },
			    fail: err => {
			      _this.isRecording = false
			    }
			  })
      }
    },
    // 安卓端禁止截屏
    NoscreenCapture() {
      let osname = plus.os.name
      if (osname == 'Android') {
        var activity = plus.android.runtimeMainActivity()
        plus.android.invoke(plus.android.invoke(activity, 'getWindow'), 'addFlags', 0x00002000)
      }
    },
    // 安卓端允许截屏  
    AllowScreenshots() {
      let osname = plus.os.name
      if (osname == 'Android') {
        var activity = plus.android.runtimeMainActivity()
        plus.android.invoke(plus.android.invoke(activity, 'getWindow'), 'clearFlags', 0x00002000)
      }
    }
  }
}
</script>

<style>
	.zzc_mol {
		background: #000;
		width: 100%;
		height: 100%;
		position: fixed;
		z-index: 99999;
		top: 0;
		left: 0;
	}
</style>
